/**
 * 防止截屏录屏工具类
 * 支持Android禁止截屏，iOS检测截屏并处理
 */
export default class AntiScreenshot {
  /**
   * 初始化防截屏功能
   */
  static init() {
    // 根据平台初始化不同的防截屏策略
    if (uni.getSystemInfoSync().platform === 'android') {
      this.initAndroid();
    } else if (uni.getSystemInfoSync().platform === 'ios') {
      this.initIOS();
    }
  }

  /**
   * Android平台初始化 - 禁止截屏
   */
  static initAndroid() {
    // Android需要通过原生插件实现，这里使用一个示例插件调用
    // 实际项目中需要集成对应的原生插件
    if (uni.requireNativePlugin) {
      try {
        const antiScreenshotPlugin = uni.requireNativePlugin('AntiScreenshot');
		
        if (antiScreenshotPlugin && antiScreenshotPlugin.setSecure) {
          antiScreenshotPlugin.setSecure(true);
          console.log('Android 禁止截屏功能已开启');
        }
      } catch (e) {
        console.error('Android 禁止截屏功能初始化失败:', e);
      }
    }
  }

  /**
   * iOS平台初始化 - 监听截屏事件
   */
  static initIOS() {
    // iOS无法直接禁止截屏，只能监听截屏事件并做处理
    if (uni.onUserCaptureScreen) {
      uni.onUserCaptureScreen(res => {
        console.log('iOS 检测到截屏行为');
        // 处理截屏事件，如显示提示、遮盖内容等
        this.handleIOSCapture();
      });
      
      // 监听录屏状态变化
      if (uni.onScreenRecordingStateChange) {
        uni.onScreenRecordingStateChange(res => {
          console.log('iOS 录屏状态变化:', res.state);
          if (res.state === 'started') {
            this.handleIOSRecordingStart();
          } else if (res.state === 'stopped') {
            this.handleIOSRecordingStop();
          }
        });
      }
      
      console.log('iOS 截屏录屏监听已开启');
    }
  }

  /**
   * 处理iOS截屏事件
   */
  static handleIOSCapture() {
    // 1. 显示提示信息
    uni.showToast({
      title: '禁止截屏，已记录操作',
      icon: 'none',
      duration: 2000
    });
    
    // 2. 可以在这里添加上报逻辑，记录截屏行为
    this.reportScreenshot();
    
    // 3. 可选：遮盖敏感内容（需要在页面中配合实现）
    uni.$emit('screenshotDetected');
  }

  /**
   * 处理iOS录屏开始
   */
  static handleIOSRecordingStart() {
    uni.showToast({
      title: '检测到录屏行为，已禁止',
      icon: 'none',
      duration: 2000
    });
    
    // 通知页面遮盖敏感内容
    uni.$emit('recordingStarted');
  }

  /**
   * 处理iOS录屏结束
   */
  static handleIOSRecordingStop() {
    // 通知页面恢复显示
    uni.$emit('recordingStopped');
  }

  /**
   * 上报截屏行为
   */
  static reportScreenshot() {
    // 这里可以实现上报逻辑
    console.log('上报截屏行为到服务器');
    // 实际项目中调用接口上报
    // uni.request({
    //   url: '/api/report/screenshot',
    //   method: 'POST',
    //   data: {
    //     time: new Date().toISOString(),
    //     page: getCurrentPage()
    //   }
    // });
  }

  /**
   * 恢复截屏功能（某些场景下可能需要临时允许）
   */
  static enableScreenshot() {
    if (uni.getSystemInfoSync().platform === 'android' && uni.requireNativePlugin) {
      try {
        const antiScreenshotPlugin = uni.requireNativePlugin('AntiScreenshot');
        if (antiScreenshotPlugin && antiScreenshotPlugin.setSecure) {
          antiScreenshotPlugin.setSecure(false);
          console.log('Android 截屏功能已恢复');
        }
      } catch (e) {
        console.error('Android 恢复截屏功能失败:', e);
      }
    }
  }
}
